package com.woniuxy.controller;

import com.woniuxy.entity.Order;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @Author: 马宇航
 * @Description: RabbitMQ的统一接口
 * @DateTime: 25/10/24/星期五 16:46
 * @Component: 成都蜗牛学苑
 **/
@RestController
@RequestMapping("/mq")
public class RabbitMQController {
    @Autowired
    RabbitTemplate rabbitTemplate;
    @GetMapping("/workQueue")
    public String workQueue(String msg){
        rabbitTemplate.convertAndSend("workQueue",msg);
        return "工作队列消息发送 success";
    }
    @GetMapping("/register")
    public String register(String username){
        //暂时不需要routingkey，直接可以指定交换机，交换机和队列之间的banding是不需要routingkey的。
        //广播交换机会发送给所有binding的队列，没有route路由的概念。
        rabbitTemplate.convertAndSend("fanoutExchange","",username);
        return "注册队列消息发送 success";
    }
    @GetMapping("/pay")
    public String getPayStatus(String payStatus){
        //需要routingkey，根据不同的路由键，路由到不同的队列中
        rabbitTemplate.convertAndSend("rentalCarPayExchange",payStatus,payStatus+"发送的消息，还有其他的内容……");
        return "租车支付消息发送 success";
    }
    @PostMapping("/orderSuccess")
    public String getPayStatus(@RequestBody Order order){
        //需要routingkey，根据不同的路由键，路由到不同的队列中
        rabbitTemplate.convertAndSend("orderTopicExchange","order.success."+order.getOrderId(),order);
        return "租车支付消息发送 success";
    }
    @PostMapping("/orderPaying")
    public String getPayPay(@RequestBody Order order){
        //需要routingkey，根据不同的路由键，路由到不同的队列中
        rabbitTemplate.convertAndSend("orderTopicExchange","order.paying."+order.getOrderId(),order);
        return "租车支付消息发送 success";
    }
}
